Skip to content

chore: bump C++ server SDK to 3.14.0 and Redis source to 2.4.2 - #128

Open
devin-ai-integration[bot] wants to merge 2 commits into
mainfrom
devin/1791191072-cpp-server-3.14.0
Open

devin-ai-integration[bot] wants to merge 2 commits into
mainfrom
devin/1791191072-cpp-server-3.14.0

Conversation

@devin-ai-integration

@devin-ai-integration devin-ai-integration Bot commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Moves the examples and CI to the latest C++ Server-side SDK release (3.14.0) and Redis Source release (2.4.2), both published 2026-09-28. This follows the same pattern as #114.

  • examples/hello-{debian,haproxy,nginx}/Dockerfile: ARG CPP_SDK_VERSION=3.13.1 → 3.14.0
  • .github/variables/cpp-sdk-versions.env: sdk=3.13.1 → 3.14.0, redis_source=2.4.1 → 2.4.2
  • test-redis.lua: testVariationDetailWithRedisSource now expects errorKind = "FLAG_NOT_FOUND" instead of "CLIENT_NOT_READY". This is required by the bump: cpp-sdks#508 (in 3.14.0) makes lazy-load mode always report initialized. As a result, an unreachable store now returns the default with FLAG_NOT_FOUND rather than CLIENT_NOT_READY. This is an intentional upstream change, documented under "Behavioral change" in that PR.
  • The README minimum-version table (3.9.0 / 2.1.19) stays as it is. It lists the minimum supported versions, and 3.14.0 doesn't require raising them. Lua SDK C code, rockspecs, base images, boost and Actions pins are also unchanged.
Implementation details

Why these are exact pins: Docker ARGs and the CI env file are build inputs, not package-manager constraints, so there is no range syntax. The only way to track the latest release is to bump the pin within major 3 (and within major 2 for the Redis source).

What changed upstream in 3.14.0: FDv2 streaming synchronizer for the client SDK, two server-side bug fixes (lazy-load evaluations without $inited per #508, and keyed tombstones are now read as deleted), and internal bumps to cpp-internal 0.15.0 and cpp-sse-client 0.8.0. Redis Source 2.4.2 only bumps its cpp-server dependency to 3.14.0. The C binding headers have no API changes between 3.13.1 and 3.14.0.

Test change: On the first CI run of this PR, the 4 linux-build (*, launchdarkly-server-sdk-redis-…) jobs failed with expected CLIENT_NOT_READY, actual FLAG_NOT_FOUND in testVariationDetailWithRedisSource. The test points the client at an unreachable redis://localhost:1234, which is exactly the case #508 changed. Note that the rockspec doesn't constrain the C++ SDK version, so anyone who builds the Lua SDK against 3.14.0 already gets this behavior. Only the test expectation changes here.

Deprecations: None in the C binding headers at 3.14.0. The examples only use ld.clientInit, ld.makeContext and client:boolVariation. The deprecated makeUser is not used.

Local testing (Linux VM, Docker):

  • I built all three example images with the bumped Dockerfiles. Base images were swapped to mirror.gcr.io/library/... in uncommitted copies to get around docker.io rate limits. Each image was run with the hello-app server key and LAUNCHDARKLY_FLAG_KEY=hello-boolean:
    • hello-debian (C++ SDK built from source at 3.14.0): The hello-boolean feature flag evaluates to true.
    • hello-haproxy (3.14.0 linux-gcc-x64-dynamic.zip release artifact): <p>The hello-boolean feature flag evaluates to true.</p>
    • hello-nginx (OpenResty 1.21.4.1, built from source at 3.14.0): <p>The hello-boolean feature flag evaluates to true.</p>
  • luarocks test launchdarkly-server-sdk-redis-2.2.0-0.rockspec (Lua 5.3, Redis Source linux-gcc-x64-dynamic.zip):
    • main's test file vs 2.4.1 / 3.13.1: 4/4 pass (baseline)
    • main's test file vs 2.4.2 / 3.14.0: 3/4, reproducing the CI failure
    • this branch vs 2.4.2 / 3.14.0: 4/4 pass

Link to Devin session: https://app.devin.ai/sessions/568e1aed51484d00a044173ce3f061f6
Open in Devin Desktop: https://app.devin.ai/desktop/session/568e1aed51484d00a044173ce3f061f6?variant=devin


Note

Overview
Bumps pinned C++ Server SDK to 3.14.0 and Redis source to 2.4.2 across CI (.github/variables/cpp-sdk-versions.env) and the hello debian, haproxy, and nginx example Dockerfiles (CPP_SDK_VERSION).

Updates test-redis.lua so testVariationDetailWithRedisSource expects FLAG_NOT_FOUND instead of CLIENT_NOT_READY when evaluating against an unreachable Redis URL in lazy-load mode—matching upstream 3.14.0 behavior (lazy-load clients report initialized; missing flags surface as not found rather than client-not-ready).

Reviewed by Cursor Bugbot for commit 993c3f5. Bugbot is set up for automated code reviews on this repo. Configure here.

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".

  • Disable automatic comment, CI, and merge conflict monitoring

@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

@cursor review

…C++ SDK 3.14.0)

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

@cursor review

@kinyoklion
kinyoklion marked this pull request as ready for review October 5, 2026 15:53
@kinyoklion
kinyoklion requested a review from a team as a code owner October 5, 2026 15:53

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant